import axios from 'axios'
import router from '@renderer/router'
//引入进度条
import nprogress from 'nprogress'
//引入相关进度条的样式
import 'nprogress/nprogress.css'

const request = axios.create({
    baseURL: 'http://127.0.0.1:8080/api',
    // baseURL: 'http://192.168.62.17:8080/api',
    timeout: 10000
})

//请求拦截器:将来项目中【N个请求】，只要发请求,会触发请求拦截器!!!
request.interceptors.request.use((config) => {
    //请求拦截器:请求头【header】,请求头能否给服务器携带参数
    //请求拦截器：其实项目中还有一个重要的作用,给服务器携带请求们的公共的参数
    nprogress.start() //进度条开始
    // //token[公共参数]
    const token = sessionStorage.getItem('token')
    if (token) {
        config.headers.Authorization = `Bearer ${token}`
    }
    return config
})

//响应拦截器：请求数据返回会执行
request.interceptors.response.use(
    (res) => {
        //res:实质就是项目中发请求、服务器返回的数据
        //进度条结束
        nprogress.done() //进度条结束
        if (res.data.msg !== '请求成功') {
            return Promise.reject(res.data.msg)
        } else {
            return res.data
        }
    },
    (err) => {
        nprogress.done() //进度条结束
        //温馨提示:某一天发请求,请求失败,请求失败的信息打印出来
        const errMsg = err.response.data.message
        if (errMsg === '身份验证失败') {
            //清除token
            localStorage.removeItem('token')
            //跳转到登录页面
            router.push({ path: '/login' })
        }
        //终止Promise链
        // throw new Error(err.response.data.message)
        // 其他错误情况
        return Promise.reject(err.response.data.message)
    }
)
export default request
